package com.briup.day02;

public class Homework4 {

    public static void main(String[] args) {
        // 将参数v的第n位置设为1，然后返回该结果值
        System.out.println(setBit(5, 1));
        System.out.println(setBit(5, 2));
        System.out.println(setBit(2, 13));
        System.out.println("=====================");
        System.out.println(setBit0(5, 3));
        System.out.println(setBit0(2, 2));
    }

    /**
     * 将参数v的第n位置设为1，然后返回该结果值
     *
     * @param num   原始参数
     * @param index 指定的位置
     * @return 修改后的值
     */
    private static int setBit(int num, int index) {
        // 5 0000 0101 ，将参数5中第13个二进制位修改为1
        // 0000 0000 0000 0101
        // 1<<13 ==> 0001 0000(3)
        int temp = 1 << (index - 1);
        return num | temp;
    }

    /**
     * 将参数v的第n位置设为0，然后返回该结果值
     *
     * @param num   原始参数
     * @param index 指定的位置
     * @return 修改后的值
     */
    private static int setBit0(int num, int index) {
        // 2 0000 0010 ，将第2位设置为0，无论其原先是否为0，都设置为0
        //  1111 1110 &  ==> 0000 0010 2
        //  1111 1101 & ==> 0000 0
        int temp = 1 << (index - 1);
        return num & ~temp;
    }
}
